import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.junit.Test;



public class ChouclassTest {

	@Test
	public void testChiffre(){
		assertFalse(0==1);
	}
	
	@Test
	public void testVerifChouclass(){
		testExtract();
	}

	
	private void testExtract() {
		Chou chou = null;
		try {
			chou = new Chou("Pipo", 20);
		} catch (Exception e) {
			fail("Cas anormal sur testExtract. " + e.getMessage());
			
		}
		assertEquals("Test du nom du chou", "Pipo", chou.getNom());
		assertEquals("Test du poids du chou", 20, chou.getPoids());
		
		chou.setNom("Zigo");
		assertEquals("Test du nom du chou", "Zigo", chou.getNom());
		chou.setPoids(0);
		assertEquals("Test du poids du chou", 0, chou.getPoids());
		
		chou.incrementePoids();
		assertEquals("Test du poids du chou", 1, chou.getPoids());
		
		chou.incrementePoids();
		chou.incrementePoids();
		assertEquals("Test du poids du chou", 3, chou.getPoids());
		
		assertTrue("Test de la fonction de l'affichage des informations", "nom : Zigo poids : 3".equals(chou.afficheInfos()));
	}
	
	@Test
	public void testVerifNewChouclass(){
		Chou chou = new Chou();
		assertEquals("Test du nom du chou", "", chou.getNom());
		assertEquals("Test du poids du chou", 0, chou.getPoids());
	}
	
	@Test
	public void testVerifNewChouclassPanier(){
		Panier panier = new Panier("Panini");
		Chou chou = new Chou(panier);
		assertEquals("Test du nom du chou", "", chou.getNom());
		assertEquals("Test du poids du chou", 0, chou.getPoids());
		assertEquals("Test du nom de son panier", "Panini", chou.getMonPanier().getNomPanier());
		assertTrue("Test de toString du chou", "nom :  poids : 0 mon Panier : Panini".equals(chou.afficheInfos()));
	}
	
	@Test
	public void testVerifNewChouclassPanierAvecInfo(){
		Panier panier = new Panier("Panini");
		Chou chou = new Chou(panier);
		chou.setNom("Bok");
		chou.setPoids(12);
		assertTrue("Test de toString du chou", "nom : Bok poids : 12 mon Panier : Panini".equals(chou.afficheInfos()));
	}
	
	@Test
	public void testVerifNullNameChouclass(){
		Chou chou = null;
		try {
			chou = new Chou(null, 30);
		} catch (Exception e) {
			assertEquals("Test en cas d'erreur de testVerifNullNameChouclass", "Veuillez indiquer un nom et un poids positif pour le choux", e.getMessage());
		}
	}
	
	@Test
	public void testVerifFalseChou(){
		Chou chou = null;
		try {
			chou = new Chou(null, 30);
		} catch (Exception e) {
			assertEquals("Test en cas d'erreur de testVerifFalseChou", "Veuillez indiquer un nom et un poids positif pour le choux", e.getMessage());
		}
	}
	
	@Test
	public void testPoidsPlus(){
		Chou chou = null;
		try {
			chou = new Chou("Pipo", 20);
		} catch (Exception e) {
			fail("Cas anormal sur testPoidsPlus. " + e.getMessage());
			
		}
		chou.incrementePoids();
		assertEquals("Test de la fonction poidPlus du chou", 21, chou.getPoids());
		chou.incrementePoids();
		chou.incrementePoids();
		assertTrue("Test de la fonction poidPlus du chou", 23 == chou.getPoids());
	}
	
	@Test
	public void testPoidsPlusNull(){
		Chou chou = new Chou();
		chou.incrementePoids();
		assertEquals("Test de la fonction poidPlus du chou null", 1, chou.getPoids());
	}
	
	@Test
	public void testAffichChou(){
		Chou chou = null;
		try {
			chou = new Chou("Zigo", 3);
		} catch (Exception e) {
			fail("Cas anormal sur testAffichChou. " + e.getMessage());
			
		}
		assertTrue("Test de la fonction de l'affichage des informations", "nom : Zigo poids : 3".equals(chou.afficheInfos()));
	}
	
	@Test
	public void testAffichNewChou(){
		Chou chou = new Chou();
		assertTrue("Test de la fonction de l'affichage des informations", "nom :  poids : 0".equals(chou.afficheInfos()));
	}
	
	@Test
	public void testSetPoids(){
		Chou chou = new Chou();
		chou.setPoids(12);
		assertTrue("Test du poids du chou", 12 == chou.getPoids());
	}
	
	@Test
	public void testSetPoidsZero(){
		Chou chou = new Chou();
		chou.setPoids(0);
		assertTrue("Test du poids du chou", 0 == chou.getPoids());
	}
	
	@Test
	public void testSetNom(){
		Chou chou = new Chou();
		chou.setNom("Gaga");
		assertTrue("Test du poids du chou", "Gaga".equals(chou.getNom()));
	}
	
	@Test
	public void testSetNomNull(){
		Chou chou = new Chou();
		chou.setNom(null);
		assertTrue("Test du poids du chou", null == chou.getNom());
	}
	
	@Test
	public void testSetPanier(){
		Panier p= new Panier();
		Chou chou = new Chou();
		chou.setMonPanier(p);
		
		assertTrue("Test du set du panier",null!=chou.getMonPanier());
			
	}
	
	@Test
	public void testAddPanier(){
		Panier panier = new Panier();
		Chou choux = null;
		try {
			choux = new Chou("Choucroute", 5);
		} catch (Exception e) {
			fail("Cas anormal sur testAddPanier. " + e.getMessage());
			
		}
		panier.addChoux(choux);
		assertTrue("Test du panier du choux", panier == choux.getMonPanier());
	}
	
	@Test
	public void testGetPanier(){
		Panier p= new Panier();
		Chou chou = new Chou();
		chou.setMonPanier(p);
		
		assertEquals("Test du get du panier",p,chou.getMonPanier());
	}
	
	
	
	
}
